package com.ailsa.learningsystem.dao;
import com.ailsa.learningsystem.pojo.Course;
import java.util.List;

/**
 * @Author 冉冉
 * @Version 1.0
 * CourseDao为了操作课程的增删改查
 * 写方法非常容易：
 *  1.修饰符：如果在本类中作为一个辅助的方法，可以选择private，如果是接口的方法可以选择public或者默认的【不写修饰符】
 *  2.返回值类型
 *  3.参数类型
 *  添加的方法的名称：addXxx/saveXxx
 *  修改的方法名称：updateXxx
 *  查询的方法名称：getXxx/selectXxx/findXxx
 *  删除的方法名称：deleteXxx
 */

public interface CourseDao {
    /**
     *查询全部的课程的信息
     * @return
     */
   public  List<Course> getAllCourse();

    /**
     * 根据课程类别查询课程的信息
     * @param courseType
     * @return
     */
   public List<Course> getCourseByType(String courseType);
    /**
     *根据ID查询课程信息
     * 参数类型：int类型，ID是不允许重复【一般情况下】
     * 返回值类型：课程信息
     */
   public Course  getCourseById(int courseId);

    /**
     * 根据课程名称查询课程信息
     * @param courseName
     * @return
     */
   public List<Course> getCourseByName(String courseName);

    /**
     * 添加/修改/删除：统称更新数据，如果是更新数据，返回值类型就有两个：1个：void 2.int
     *  后期学期学到MYSQL数据库，更新数据，返回值是int类型
     *  添加数据：
     *      1.课程编号【一般不需要手动写，自动生成，集合的下标自增长】，数据库的自增长，雪花算法，UUID，订单号：非常长，一般雪花算法
     *      2.课程的名称
     *          2.1：课程名称允许重复
     *          2.2：课程名称不允许重复
     *      3.课程类型
     *      4.课程总课时
     *      5.课程时长
     *      6.课程主讲老师
     *  将6个属性封装在Course课程中
     */
   public void addCourse(Course course);

    /**
     * 根据课程名称和课程类型
     * @param courseName  课程名称
     * @param courseType  课程类型
     * @return
     */
   public List<Course>    getCourseByNameType(String courseName,String courseType);

    /**
     * 根据课程的ID删除课程的信息
     * @param courseId
     */
   public void deleteCourse(int courseId);
}
